Web services and cloud computing are deployed in an unprecedented pace. New servers are unloaded and installed at datacenters every day. Demands of web services and corporate computing come from many market segments. Consumer oriented services include mobile apps such as iPhone™ apps, iPad™ apps, Android™ apps, mobile applications such as location based services, turn-by-turn navigation services, e-book services such as Kindle™, video applications such as YouTube™ or Hulu™, music applications such as Pandora™ or iTunes™, Internet television services such as Netflix™, and many other fast growing consumer Web services. On the corporate front, cloud computing based services such as Google™ docs, Microsoft™ Office Live and Sharepoint™ software, Salesforce.com™'s on-line software services, tele-presence and Web conferencing services, and many other corporate cloud computing services.
More and more servers are deployed to accommodate the increasing computing needs. These servers are typically managed by service controllers such as server load balancers (SLB) or application delivery controllers (ADC). These controllers manage the load balancing and delivery of service sessions from client host computers to servers. As more servers are deployed, more controllers are deployed accordingly. These network controllers can be pooled together for several significant purposes—to provide scalable services and solutions when dealing with large number of users; to offer high availability of service when dealing with possible unscheduled or scheduled unavailability of a server; to help ease the complexity of administration and management of a larger number of controllers. The controllers in a cluster pool work in tandem with each other in order to provide a consistent service to the users. If there is a configuration change to a controller in a cluster, the change can have a significant adverse effect on operation of other controllers in the cluster if the change conflicts with existing configurations of these controllers. Often, the totality of existing configuration of the cluster is recorded in a configuration file. All controllers in the cluster must adhere to the configuration according to the configuration file for proper operation of the controllers in the cluster. When there is a change of configuration, the configuration file must be updated to include the change. A new configuration file combining the new configuration change and the existing configuration file becomes the most recent configuration file. The new configuration file is to be informed to all controllers in the cluster. If one controller in the cluster becomes unavailable and available again, the newly available controller needs to apply the configuration in the new configuration file in order to work in tandem with other controllers in the cluster.
Therefore, there is a need for a method for a virtual chassis system to synchronize a configuration file in the cluster of controllers.